﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CurriculasController;
using CurriculasEntities;

namespace GestionCurriculos
{
    public partial class frmRegCurso : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                int codCurso = 0;
                lblTitulo.Text = "Registrar Curso";

                if (Request.QueryString["idCurso"] != null)
                {
                    codCurso = int.Parse(Request.QueryString["idCurso"]);
                    lblTitulo.Text = "Modificar Curso";
                    //Cargar Datos Curso
                    ObtenerCurso(codCurso);
                }


                //CARGAR COMBOS
                ListarAreaConocimiento();
                ListarPrerequisitos(codCurso);

                //CARGAR PREREQUISITOS
                ListaPrerequisitos(codCurso);
            }
        }

        private void ObtenerCurso(int codCurso)
        {
            CursoBL objCursoBL = new CursoBL();
            CursoBE objCursoBE = new CursoBE();

            objCursoBE.codCurso = codCurso;

            objCursoBE = objCursoBL.Obtener(codCurso);

            txtCurso.Text = objCursoBE.nomCurso;
            txtPerfil.Text = objCursoBE.perDocente;
            txtCreditos.Text = objCursoBE.creditos.ToString();
            txtHoras.Text = objCursoBE.canHoras.ToString();
            cboArea.SelectedValue = objCursoBE.codAreaConocimiento.ToString();

        }
        private void ListaPrerequisitos(int codCurso)
        {

            //CARGAR PAISES
            List<ListaPrerequisitoBE> _lstAreas = new ListaBL().ListarPrerequisitos(codCurso).ToList();

            foreach (ListaPrerequisitoBE lista in _lstAreas) {
                ListItem item = new ListItem();
                item.Value = lista.codCursoPadre.ToString();
                item.Text = lista.nomCurso;
                lstPrerequisitos.Items.Add(item);
            }

            

        }
        private void ListarPrerequisitos(int codCurso)
        {

            //CARGAR PAISES
            List<ListaCursoPrerequisitoBE> _lstAreas = new ListaBL().ListarCursoPrerequisito(codCurso).ToList();
            cboPrerequisito.DataSource = _lstAreas;
            cboPrerequisito.DataTextField = "nomCurso";
            cboPrerequisito.DataValueField = "codCurso";
            cboPrerequisito.DataBind();
            cboPrerequisito.Items.Insert(0, "Seleccionar");

        }
        private void ListarAreaConocimiento()
        {

            //CARGAR PAISES
            List<AreaConocimientoBE> _lstAreas = new AreaConocimientoBL().ListarTodos().ToList();
            cboArea.DataSource = _lstAreas;
            cboArea.DataTextField = "titulo";
            cboArea.DataValueField = "codAreaConocimiento";
            cboArea.DataBind();
            cboArea.Items.Insert(0, "Seleccionar");

        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            CursoBL objCursoBL = new CursoBL();
            CursoBE objCursoBE = new CursoBE();
            PrerequisitoBL objPreBL = new PrerequisitoBL();
            PrerequisitoBE objPreBE = new PrerequisitoBE();

            if (txtCurso.Text.Trim() == "")
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction2", "alert('Ingrese datos en el campo Nombre de Curso.')", true);
            }
            else
            {
                try
                {
                    objCursoBE.nomCurso = txtCurso.Text;
                    objCursoBE.perDocente = txtPerfil.Text;
                    objCursoBE.creditos = int.Parse(txtCreditos.Text);
                    objCursoBE.canHoras = int.Parse(txtHoras.Text);
                    objCursoBE.codAreaConocimiento = int.Parse(cboArea.SelectedValue);
                    objCursoBE.estado = "1";

                    try
                    {

                        if (Request.QueryString["idCurso"] != null)
                        {
                            objCursoBE.codCurso = int.Parse(Request.QueryString["idCurso"]);
                            objCursoBE = objCursoBL.Modificar(objCursoBE);

                            objPreBL.EliminarPrerequisitos(objCursoBE.codCurso);
                            //GUARDAR PREREQUISITOS

                            foreach (ListItem item2 in lstPrerequisitos.Items)
                            {
                                objPreBE.codCursoHijo = objCursoBE.codCurso;
                                objPreBE.codCursoPadre = int.Parse(item2.Value);
                                objPreBE.estado = "1";
                                objPreBL.Crear(objPreBE);

                            }
                            Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction2", "alert('Se modificó satisfactoriamente el curso con código " + objCursoBE.codCurso + "');window.location.assign('frmCurso.aspx');", true);
                            //Limpiar();
                        }
                        else
                        {
                            objCursoBE.codCurso = objCursoBL.Crear(objCursoBE);

                            //GUARDAR PREREQUISITOS
                            
                            foreach (ListItem item2 in lstPrerequisitos.Items)
                            {
                                objPreBE.codCursoHijo = objCursoBE.codCurso;
                                objPreBE.codCursoPadre = int.Parse(item2.Value);
                                objPreBE.estado = "1";
                                objPreBL.Crear(objPreBE);
                                  
                            }
                            Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction2", "alert('Se registró satisfactoriamente el curso con código " + objCursoBE.codCurso + "');window.location.assign('frmCurso.aspx');", true);
                            //Limpiar();
                        }

                    }
                    catch (Exception ex)
                    {

                    }
                }
                catch (Exception ex)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction2", "alert('Ingrese los datos correctamente.')", true);
                }

            }
        }

        private void Limpiar()
        {
            txtCurso.Text = "";
            txtPerfil.Text = "";
            txtHoras.Text = "";
            txtCreditos.Text = "";
            cboArea.SelectedIndex = 0;

            Response.Redirect("frmCurso.aspx");
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("frmCurso.aspx");
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            if (cboPrerequisito.SelectedValue == "Seleccionar")
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction2", "alert('Seleccionar un prerequisito valido.')", true);
            }
            else
            {
                string nomCurso = cboPrerequisito.SelectedItem.Text;
                string codCurso = cboPrerequisito.SelectedValue;
                string val = "";
                foreach (ListItem item2 in lstPrerequisitos.Items)
                {
                    if (item2.Value == codCurso)
                    {
                        val = "1";
                    }
                }

                if (val == "1")
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction2", "alert('El prerequisito ya se encuentra agregado.')", true);
                }
                else
                {
                    ListItem item = new ListItem();
                    item.Value = codCurso;
                    item.Text = nomCurso;
                    lstPrerequisitos.Items.Add(item);
                }

            }
        }

        protected void btnEliminarPre_Click(object sender, EventArgs e)
        {
            lstPrerequisitos.Items.Remove(lstPrerequisitos.SelectedItem);
            
        }
    }
}
